Speed and consistency of data access are highly important and can be highly variable depending on the architecture of any database environment. The difficulties associated with providing such speed and consistency are oftentimes directly related to the implementation of a specific database, its architecture and/or logical structure. Many conventional databases offerings have moved increasingly away from traditional relational database models and their accompanying constraints to deliver database systems that are more flexible, easier to implement, and highly scalable. Many database systems are now referred to as “NoSQL” databases in response to non-adherence to the widely used relational database management system (“RDBMS”) model.
Some example NoSQL database systems can be characterized by not using SQL as a database query language, not providing full ACID guarantees (oftentimes employing eventual consistency in the available data), and can also include distributed, fault-tolerant architecture. The transition away from RMDS models can significantly improve flexibility, scalability, and in some examples tolerance in a database system.
Additional differences exist between relational and non-relational database systems. Including, for example, how data is accessed, how a user requests data, how the data is stored in the underlying database, among other examples. Some conventional non-relational models attempt to support traditional relational data requests like “group by” and other related SQL operations like “join” and self joins. The implementation of such operations in non-relational models can be cumbersome and lead to additional complexity, for example, due to the structure (or its lack of homogeneous structure) of the underlying data in the database.